package ModelLayer;

import java.util.ArrayList;
/**
 * class OrdreContainer
 * 
 * @author (Gruppe 6) 
 * @version (2012)
 */
public class OrdreContainer
{
    
    public ArrayList<Ordre> ordrer;
    private static OrdreContainer instance;
    
    /**
     * Constructor for objects of class OrdreContainer
     */
    private OrdreContainer()
    {
        ordrer = new ArrayList<Ordre>();
    }

    public static OrdreContainer getInstance()
    {
        if(instance == null) {
            instance = new OrdreContainer();
        }
        return instance;
    }

    /**
     * Tilføj et objekt af klassen Ordre
     */
    public void addOrdre(String status, int ordreNr, Kunde minKunde)
    {
        ordrer.add(new Ordre(status, ordreNr, minKunde));
    }
    /**
     * Vis liste af ordre
     */ 
    public ArrayList<Ordre> listeAfOrdre()
    {
        return ordrer;
    }
        

    /**
     * Opdater order.
     */
    public void updaterOrder(int ordreNr, String status)
    {
        Ordre ordreObjekt = findOrdre(ordreNr);
        ordreObjekt.setStatus(status);  
        if(ordreObjekt.getStatus().equals("pakket"))
        {
            ordreObjekt.nedskrivLager();
        }
    }

    /**
     * Slet en ordre efter ordrenummer
     */
    public boolean sletOrdre(int nr)
    {
        int index = 0;
        boolean found = false;
        Ordre ordreList = null;
        
        while(index < ordrer.size() && !found)
        {
            ordreList = ordrer.get(index);
            
            if(ordreList.getOrdreNr() == nr)
            {
                found = true;
            }
            else
            {
                index ++;
            }
        }
        
        if(found)
        {
             ordrer.remove(index);
             return true;
        }
        
        else
        {
            
            return false;
        }
    }
    

    /**
     * Find en ordre efter ordrenummer
     */
    public Ordre findOrdre(int o)
    {
        int index = 0;
        boolean found = false;
        Ordre ordre = null;
        
        while(index < ordrer.size() && !found)
        {
            ordre = ordrer.get(index);
            
            if(ordre.getOrdreNr() == o)
            {
                found = true;
            }
            else
            {
                index ++;
            }
        }
        
        if(found)
        {
            return ordrer.get(index);
        }
        
        else
        {
            
            return null;
        }
    }

    /**
     * Vis tilhørende kunde.
     */
    public void minKunde(int ordreNr)
    {
        Ordre ordreObjekt = findOrdre(ordreNr);
        ordreObjekt.visMinKunde();
        
    }

}
